package com.atguigu.school.mapper;

import com.atguigu.school.pojo.Admin;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 访问管理员数据
 *
 * @author 刘逸晖
 */
public interface AdminMapper {

    /**
     * 新增管理员
     *
     * @param admin 预新增的管理员
     */
    void insertAdmin(Admin admin);

    /**
     * 根据 id 更新管理员
     *
     * @param admin 预更新的管理员 id 和新数据
     */
    void updateAdminById(Admin admin);

    /**
     * 根据 id 查询密码
     *
     * @param id 管理员的 id
     * @return 管理员的密码
     */
    String selectPasswordById(@Param("id") Integer id);

    /**
     * 根据 id 更新密码
     *
     * @param id          管理员的 id
     * @param newPassword 新密码
     */
    void updatePasswordById(@Param("id") Integer id, @Param("newPassword") String newPassword);

    /**
     * 批量删除管理员
     *
     * @param ids 预删除管理员的 id 列表
     */
    void deleteAdminsByIds(@Param("ids") List<Integer> ids);

    /**
     * 根据名字查询管理员
     *
     * @param name 管理员的名字
     * @return 管理员信息
     */
    Admin selectAdminByName(@Param("name") String name);

    /**
     * 根据名称分页查询管理员
     *
     * @param name   管理员名称，可以不完整，可为空
     * @param offset 偏移量，从 0 开始
     * @param size   个数
     * @return 管理员列表
     */
    List<Admin> selectAdminsByName(@Param("name") String name, @Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 根据名称关键词统计管理员数量
     *
     * @param name 管理员名称，可以不完整，可为空
     * @return 个数
     */
    Integer countAdminsByName(@Param("name") String name);

}
